The problem of load balancing is becoming increasingly relevant with the advent of cloud computing. The wide variety in application requirements and scale in cloud computing call for multiple unique load balancing approaches tailored to fit the individual needs of each application. For example, the “power-of-d-choices” load balancing algorithm (where d is a positive integer) provides low job waiting and response time at the cost of high signaling message overhead. The “join-idle-queue” load balancing algorithm, on the other hand, has low signaling message overhead but is only applicable in systems where each server can process one job at a time or where maximum processing rate is achieved in each server by a single job. In these specific cases, the join-idle-queue algorithm will provide good performance, but will not be ideal in other cases.